home *** CD-ROM | disk | FTP | other *** search
- #include <clib/all_protos.h>
- #include <exec/types.h>
- #include <math.h>
- #include <float.h>
-
- extern double TwoPi,Limit,PiD2,XCenter,YCenter,Factor,Two,PowerN,Pi;
- extern double PowerF;
- extern SHORT Power;
- extern UWORD Color;
- extern LONG xtemp,ytemp,RightEdge,MaxCnt;
- extern ULONG *ColorTable32,*LPixelBuf;
- extern int BPP;
-
- extern void PlotIt(void);
-
- void UseLib(double);
-
- void UseLib(double yRel)
- {
- double Zr4,Zr6,Zi6,xRel,Zr,Zi,Zr2,Zi2,Z2,Zr3,Zi3;
- ULONG *ColSrc;
- int CurCnt;
- xRel = xtemp;
- xRel = xRel - XCenter;
- Zr = xRel/Factor;
- Zi = yRel;
- xRel = Zr;
- CurCnt = 1; /* Initialize Counter */
- while (CurCnt < MaxCnt) {
- Zr2 = Zr*Zr; /* Find Zr^2 */
- Zi2 = Zi*Zi; /* Find Zi^2 */
- Z2 = Zr2+Zi2; /* Find Zr^2 + Zi^2 */
- if (Z2 > Limit) { /* is |Z| > 2*Factor */
- if (BPP == 4) {
- ColSrc = (ULONG *)ColorTable32 + (ULONG)CurCnt;
- *LPixelBuf++ = *ColSrc;
- }
- else {
- Color = CurCnt;
- PlotIt();
- }
- return;
- }
- if (Power == 2) {
- Zi = Two*Zi*Zr; /* Find original Zi * Zr */
- Zr2 = Zr2 - Zi2; /* Find Zr^2 - Zi^2 */
- }
- if (Power == 3) {
- Zr3 = Zr*(Zr2 - 3*Zi2);
- Zi = Zi*(3*Zr2 - Zi2);
- Zr2 = Zr3; /* Divide by Factor to get part of new Zr */
- }
- if (Power == 4) {
- Zr4 = (Zr2 - Zi2)*(Zr2 - Zi2) - 4*Zr2*Zi2;
- Zi = 4*(Zr2 - Zi2)*Zi*Zr;
- Zr2 = Zr4;
- }
- if (Power == 5) {
- Zr3 = Zr*(Zr2 - 3*Zi2)*(Zr2 - Zi2) + 2*Zi2*Zr*(Zi2 - 3*Zr2);
- Zi = 2*Zi*Zr2*(Zr2 - 3*Zi2) - Zi*(Zi2 - 3*Zr2)*(Zr2 - Zi2);
- Zr2 = Zr3;
- }
- if (Power == 6) {
- Zr3 = Zr*(Zr2 - 3*Zi2);
- Zi3 = Zi*(3*Zr2 - Zi2);
- Zr6 = Zr3*Zr3 - Zi3*Zi3;
- Zi6 = 2*Zr3*Zi3;
- Zr2 = Zr6;
- Zi = Zi6;
- }
- if (Power == 7) {
- Zr3 = Zr*(Zr2 - 3*Zi2);
- Zi3 = Zi*(3*Zr2 - Zi2);
- Zr6 = Zr3*Zr3 - Zi3*Zi3;
- Zi6 = 2*Zr3*Zi3;
- Zr2 = Zr6*Zr - Zi6*Zi;
- Zi = Zr6*Zi+Zi6*Zr;
- }
- Zr = xRel + Zr2; /* Find New Zr */
- Zi = yRel + Zi; /*Add in original Zi to get new Zi */
- CurCnt++;
- }
- if (BPP == 4) {
- ColSrc = (ULONG *)ColorTable32 + 0xffff;
- *LPixelBuf++ = *ColSrc;
- }
- else {
- Color = 0xffff;
- PlotIt();
- }
- return;
- }
-
-